package Controlador;

import Modelo.Figuras;
import Modelo.Semaforo;
import java.io.Serializable;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;


public class MotorSemaforo extends Thread implements Serializable  {

   Vector<Figuras> fig;
   Semaforo sem;
  int tiempo;
  	private static final long serialVersionUID = 1L;


   public  MotorSemaforo (Semaforo s,Vector<Figuras> fi) {
       fig=fi;
       sem=s;
       tiempo=4000;
   }


public synchronized  void turnoA(){    //sincronizado con turno B porque modifican ambos turnoA
       while(sem.id==1){
          fig.remove(sem);
       break;
       }
       while(sem.id==2){
          fig.add(sem);
       break;
       }

      }

public synchronized void turnoB(){

         while(sem.id==2){
          fig.remove(sem);
          fig.remove(sem);
       break;
       }
       while(sem.id==1){
          fig.add(sem);
       break;
       }
      }

    @Override
   public synchronized void run ()
   {

     while(true){
         this.turnoA();
            try {
                sleep(tiempo);

            } catch (InterruptedException ex) {
                Logger.getLogger(MotorSemaforo.class.getName()).log(Level.SEVERE, null, ex);
            }
            sem.noti();

          this.turnoB();

          try {
                sleep(tiempo);

            } catch (InterruptedException ex) {
                Logger.getLogger(MotorSemaforo.class.getName()).log(Level.SEVERE, null, ex);
            }
          sem.noti();
      }
   }

}
